package com.aaa.sbm.controller;

import com.aaa.sbm.util.CustomException;
import com.aaa.sbm.util.Result;
import com.aaa.sbm.util.ResultUtil;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @FileName: GlobalExceptionHandler
 * @Description:统一异常处理类
 * @Author: zhz
 * @CreateTime: 2025/8/22 11:09
 * @Version: 1.0.0
 */
@RestControllerAdvice  //所有使用@RestController 都会执行该类中的方法,通常就是用来做统一处理，当前就是用来统一处理异常的
public class GlobalExceptionHandler {


    /**
     * 通用处理异常的方法
     * @param e
     * @return
     */
    @ExceptionHandler
    public Result  handlerException(Exception e){
        //一定要把堆栈打印出来
        e.printStackTrace();
        //处理自定义异常
         //判断是否自定义异常
        if(e instanceof CustomException){
            //是 ，强转
            CustomException customException=  (CustomException)e;
            return new Result(customException.getErrorCode(),
                    customException.getErrorMessage(),"自定义异常！！");
        }
        //e.getClass().getName() 获取到当前抛出异常的限定名  例如： java.lang.NullPointerException
        return ResultUtil.error(e.getClass().getName()+"异常描述信息为："+e.getMessage());
    }
}
